Spring AI Alibaba框架#
一句话答案#
Spring AI Alibaba 是阿里开源、构建在 Spring AI 之上的 Java Agent 框架,在标准 Spring AI 抽象基础上补了三块:DashScope(通义千问)深度集成、Graph 运行时 + Agent Framework(
ReactAgent与多 Agent 编排,类比 LangGraph + LangChaincreate_agent),以及与阿里云原生生态(Nacos 等)的集成。
核心要点
1. 与 Spring AI 的关系#
它不是替代品而是增强:底层复用 Spring AI 的 ChatClient / Advisor / VectorStore / Tool 抽象,因此 Spring AI 的代码能平滑迁移。Spring AI Alibaba 在其上补齐了”企业级 Agent + 阿里生态”两块短板。
Spring AI Alibaba(Agent Framework + Graph + 阿里生态)
↓ 基于
Spring AI(模型/Prompt/工具/RAG 统一抽象)
↓ 基于
Spring Boot(自动配置 / 依赖注入)plaintext版本对应(以官方 release notes 为准): 稳定线是 1.1.2.x(基于 Spring AI 1.1.2,JDK 17+,Maven 坐标 com.alibaba.cloud.ai:spring-ai-alibaba-agent-framework);2.0 目前是里程碑版,对接 Spring AI 2.0 / Spring Boot 4。版本号比 Spring AI 多一位(如 1.1.2.x 对应 Spring AI 1.1.2),选型时两者要配套。
2. DashScope 集成#
原生对接阿里百炼/DashScope(spring-ai-alibaba-starter-dashscope),开箱即用通义千问(qwen 系列)的 Chat、Embedding、多模态、Rerank 等能力。配 API Key 即可用 qwen-plus/qwen-turbo 等(可用模型名以百炼控制台为准),无需自己封装 HTTP。Spring AI 2.0 核心仓库不含 DashScope,接通义千问主要靠这里。
3. 分层:Graph Core + Agent Framework(最核心增量)#
Graph Core(底层运行时):对标 LangGraph 的 Java 实现——把复杂 Agent 流程建模成显式状态图(StateGraph):
- Node:一个处理步骤(调模型 / 工具 / 子 Agent)
- Edge / 条件边:节点间流转,支持分支、循环、并行条件边和并行汇聚(AllOf / AnyOf)
- State:跨节点传递的共享状态
- 提供持久化、工作流编排、流式输出,支持 Human-in-the-loop、Checkpoint 断点续跑
Agent Framework(上层 API):构建在 Graph 之上,屏蔽图的细节:
ReactAgent:ReAct 范式的单 Agent,内置工具调用、流式输出;生命周期上有 hook,可做人工审批、上下文压缩、模型/工具调用次数限制;支持 Agent Skills(渐进式披露)- 多 Agent 编排:
SequentialAgent、ParallelAgent、RoutingAgent、LoopAgent,以及 Supervisor、Handoffs 等模式 - Admin / Studio:可视化调试、观测、评估和 MCP 管理
适合”线性 Chain 不够、需要条件分支/循环/审批”的场景,见 多Agent协作架构、Agent设计模式。
4. 阿里云原生生态集成#
| 组件 | 作用 |
|---|---|
| Nacos | Agent 注册与发现,支撑 A2A(Agent-to-Agent)通信;也可作配置中心管理 Prompt / 模型配置 |
| Higress AI 网关 | 统一 LLM 流量入口,做限流、多模型路由、Token 配额 |
| ARMS / OpenTelemetry | Agent 全链路可观测(Trace/Metrics) |
| Sentinel | 调用限流降级 |
Nacos 的 A2A 集成见于官方 README;Higress、ARMS、Sentinel 属于阿里云生态中可配合使用的组件,具体集成方式以官方文档为准。这套是它相对原生 Spring AI 的差异化卖点:企业级治理能力。
5. 何时选它#
- 已在阿里云生态 / 用通义千问 → 首选,集成成本最低
- 需要可视化或代码化的复杂 Agent 编排(Graph / ReactAgent / 多 Agent)→ 比裸 Spring AI 省事
- 纯标准能力、不绑厂商 → 用原生 Spring AI 即可,保持可移植性
6. 从原生 Spring AI 演进的常见思路#
自己在原生 Spring AI 上实现了 ReAct 循环的项目,随着路由、检索、生成逻辑堆进一个大类,常见演进是:用 Graph 把这些步骤拆成显式的状态图节点(每步可单测、可断点恢复),用配置中心管理 Prompt 版本与灰度,用 AI 网关统一做模型级联(强模型负责生成、轻模型负责决策)的流量路由与配额。代价是多一层框架依赖和版本配套成本。
面试回答(2分钟版)
Spring AI Alibaba 是阿里开源的、构建在 Spring AI 之上的 Java Agent 框架,关键词是”增强而非替代”——它底层复用 Spring AI 的 ChatClient、Advisor、VectorStore 这些抽象,代码能平滑迁移,在此之上补了三块短板。第一是 DashScope 深度集成,原生对接阿里百炼,开箱即用通义千问的 Chat、Embedding、多模态、Rerank。第二也是最核心的增量是两层编排:底层 Graph Core 是对标 LangGraph 的 Java 实现,把复杂 Agent 流程建模成显式状态图,有 Node、条件 Edge、共享 State,支持分支、循环、并行、Human-in-the-loop 和 Checkpoint 断点续跑;上层 Agent Framework 提供 ReactAgent,以及 Sequential、Parallel、Routing、Loop 这些多 Agent 编排方式和 Supervisor、Handoffs 模式,生命周期 hook 能挂人工审批、上下文压缩和调用次数限制。第三是和阿里云原生生态集成:Nacos 做 Agent 注册发现支撑 A2A 通信,也能做 Prompt 配置中心,再配合 Higress AI 网关做多模型路由限流、ARMS 做可观测,这套企业级治理能力是它相对原生 Spring AI 的差异化卖点。版本上它跟 Spring AI 配套,稳定线是 1.1.2.x,2.0 还在里程碑阶段。选型上,已经在阿里云生态或用通义千问就首选它,需要复杂 Agent 编排也比裸 Spring AI 省事;如果只用标准能力、不想绑厂商,用原生 Spring AI 保持可移植性就够了。结合项目时可以讲:为什么用或不用它、如果引入会先拆哪一块流程。
追问与易错
追问方向:
- Spring AI Alibaba 和 Spring AI 是什么关系?要不要二选一? → 不是二选一,它构建在 Spring AI 之上、复用其抽象,等于”Spring AI + 阿里生态增强 + Graph/Agent 编排”。用了它仍能用标准 Spring AI 的代码,但版本要配套(SAA 1.1.2.x 对应 Spring AI 1.1.2)
- 它的 Graph 和 LangGraph 有什么异同? → 思想一致(显式状态图 + 条件边 + 共享 State + Checkpoint),区别是 Java/Spring 实现、与 Spring AI 抽象和阿里生态集成。解决线性 Chain 表达不了分支/循环/审批的问题
ReactAgent和 Graph 什么关系? →ReactAgent属于上层 Agent Framework,底层跑在 Graph 上(类似 LangChain 的create_agent跑在 LangGraph 上);预置 Agent 够用就用它,需要自定义节点再下沉到 Graph- 不用阿里云能用吗? → 能,Graph 编排和 Spring AI 标准能力不绑云;但 Nacos/Higress/ARMS 这些治理增量在阿里生态里收益最大,脱离生态价值下降
- 它和 MCP 什么关系? → 复用 Spring AI 的 MCP 支持,工具可作为 MCP Server 暴露 / 作为 Client 消费,Admin 里还能管理 MCP,见 MCP协议原理
- 选型建议? → 通义千问 + 复杂编排 + 阿里云 → Spring AI Alibaba;跨厂商可移植优先 / 只需基础能力 → 原生 Spring AI;Python 栈 → LangGraph 或 AgentScope
易错点:
- ❌ “Spring AI Alibaba 是另起炉灶的框架” → 它是 Spring AI 的上层增强,不脱离其抽象
- ❌ “只能配通义千问” → DashScope 是默认强集成,但底层是 Spring AI 仍可接其他 Provider
- ❌ “Graph 只是多 Agent” → Graph 是通用工作流编排(含单 Agent 的分支/循环/审批),多 Agent 只是其中一类用法
- ❌ “SAA 版本随便配 Spring AI 版本” → SAA 版本号跟随 Spring AI(多一位补丁号),不配套容易出兼容问题